1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
   | #import "MyManager.h"
  static MyManager *sharedMyManager = nil;
  @implementation MyManager
  @synthesize someProperty;
  #pragma mark Singleton Methods + (id)sharedManager {   @synchronized(self) {       if(sharedMyManager == nil)           sharedMyManager = [[super allocWithZone:NULL] init];   }   return sharedMyManager; } + (id)allocWithZone:(NSZone *)zone {   return [[self sharedManager] retain]; } - (id)copyWithZone:(NSZone *)zone {   return self; } - (id)retain {   return self; } - (unsigned)retainCount {   return UINT_MAX;  } - (oneway void)release {    } - (id)autorelease {   return self; } - (id)init {   if (self = [super init]) {       someProperty = [[NSString alloc] initWithString:@"Default Property Value"];   }   return self; } - (void)dealloc {      [someProperty release];   [super dealloc]; }
  @end
   |